<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"
    />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>JS错误处理</title>
  </head>
  <body>
    <script>
        // try 尝试    catch 抓住
        try{
            //自动抛出
            // let a=;
            // console.log(a); // 产生的错误本身是一个错误对象
            // console.log(123); //这里是不会输出的

            //手动抛出错误
            // throw new Error('这里出错啦~~~');
            throw 123;
        }catch(e){
            //错误处理的代码
            //当 try 中运行时产生了错误, 就会执行 catch 代码段的内容
            // console.log('出错啦~~~');
            //1. 错误提醒  2. 写入日志
            console.dir(e);
        }

        console.log('i love you');


      /**
       * 语法固定 try...catch   try 尝试的意思  catch 捕获  作用: 统一处理错误
       * 1. try catch捕获到错误之后, 后续代码可以继续执行
       * 2. catch 可以将错误信息捕获到. e 是一个对象, 有 message 和 stack 两个属性
       *                                             错误信息    错误位置
       * 3. 抛出错误之后, 在后续的 try 里面的代码不会执行
       * 4. try 不能捕获语法错误. 其他类型错误可以捕获.
       * 5. 允许使用 throw 手动的抛出错误
       * 6. 抛出任意类型的数据
       * 
       * try..catch 作用: 
       * 1. 解决运行错误, 使代码继续执行
       * 2. 对错误进行统一处理, 简化代码
       */
    </script>
  </body>
</html>
